;--------------------------------------------------------
; File Created by SDCC : free open source ANSI-C Compiler
; Version 2.8.0 #5117 (Mar 23 2008) (MINGW32)
; This file was generated Sun Nov 23 13:52:34 2008
;--------------------------------------------------------
	.module main
	.optsdcc -mmcs51 --model-small
	
;--------------------------------------------------------
; Public variables in this module
;--------------------------------------------------------
	.globl _main
	.globl _Init_Device
	.globl _Oscillator_Init
	.globl _Port_IO_Init
	.globl _Interrupts_Init
	.globl _Timer_Init
	.globl _SPI_Init
	.globl _UART_Init
	.globl _ADC_Init
	.globl _EEPROM_SEL
	.globl _LCD_E
	.globl _LCD_RW
	.globl _LCD_RS
	.globl _SPIF
	.globl _WCOL
	.globl _MODF
	.globl _RXOVRN
	.globl _NSSMD1
	.globl _NSSMD0
	.globl _TXBMT
	.globl _SPIEN
	.globl _AD0EN
	.globl _AD0TM
	.globl _AD0INT
	.globl _AD0BUSY
	.globl _AD0WINT
	.globl _AD0CM2
	.globl _AD0CM1
	.globl _AD0CM0
	.globl _CF
	.globl _CR
	.globl _CCF2
	.globl _CCF1
	.globl _CCF0
	.globl _CY
	.globl _AC
	.globl _F0
	.globl _RS1
	.globl _RS0
	.globl _OV
	.globl _F1
	.globl _PARITY
	.globl _TF2H
	.globl _TF2
	.globl _TF2L
	.globl _TF2LEN
	.globl _TF2CEN
	.globl _T2SPLIT
	.globl _TR2
	.globl _T2XCLK
	.globl _MASTER
	.globl _TXMODE
	.globl _STA
	.globl _STO
	.globl _ACKRQ
	.globl _ARBLOST
	.globl _ACK
	.globl _SI
	.globl _PSPI0
	.globl _PT2
	.globl _PS0
	.globl _PS
	.globl _PT1
	.globl _PX1
	.globl _PT0
	.globl _PX0
	.globl _EA
	.globl _ESPI0
	.globl _ET2
	.globl _ES0
	.globl _ES
	.globl _ET1
	.globl _EX1
	.globl _ET0
	.globl _EX0
	.globl _P2_7
	.globl _P2_6
	.globl _P2_5
	.globl _P2_4
	.globl _P2_3
	.globl _P2_2
	.globl _P2_1
	.globl _P2_0
	.globl _S0MODE
	.globl _SM0
	.globl _MCE0
	.globl _SM2
	.globl _REN0
	.globl _REN
	.globl _TB80
	.globl _TB8
	.globl _RB80
	.globl _RB8
	.globl _TI0
	.globl _TI
	.globl _RI0
	.globl _RI
	.globl _P1_7
	.globl _P1_6
	.globl _P1_5
	.globl _P1_4
	.globl _P1_3
	.globl _P1_2
	.globl _P1_1
	.globl _P1_0
	.globl _TF1
	.globl _TR1
	.globl _TF0
	.globl _TR0
	.globl _IE1
	.globl _IT1
	.globl _IE0
	.globl _IT0
	.globl _P0_7
	.globl _P0_6
	.globl _P0_5
	.globl _P0_4
	.globl _P0_3
	.globl _P0_2
	.globl _P0_1
	.globl _P0_0
	.globl _PCA0CP2
	.globl _PCA0CP1
	.globl _PCA0CP0
	.globl _PCA0
	.globl _ADC0LT
	.globl _ADC0GT
	.globl _ADC0
	.globl _IDA0
	.globl _TMR3RL
	.globl _TMR3
	.globl _TMR2RL
	.globl _RCAP2
	.globl _TMR2
	.globl _TMR1
	.globl _TMR0
	.globl _VDM0CN
	.globl _PCA0CPH0
	.globl _PCA0CPL0
	.globl _PCA0H
	.globl _PCA0L
	.globl _SPI0CN
	.globl _EIP1
	.globl _P1MDIN
	.globl _P1MODE
	.globl _P0MDIN
	.globl _P0MODE
	.globl _B
	.globl _RSTSRC
	.globl _PCA0CPH2
	.globl _PCA0CPL2
	.globl _PCA0CPH1
	.globl _PCA0CPL1
	.globl _ADC0CN
	.globl _EIE1
	.globl _INT01CF
	.globl _IT01CF
	.globl _OSCLCN
	.globl _XBR1
	.globl _XBR0
	.globl _ACC
	.globl _PCA0CPM2
	.globl _PCA0CPM1
	.globl _PCA0CPM0
	.globl _PCA0MD
	.globl _PCA0CN
	.globl _P1SKIP
	.globl _P0SKIP
	.globl _REF0CN
	.globl _PSW
	.globl _TMR2H
	.globl _TH2
	.globl _TMR2L
	.globl _TL2
	.globl _TMR2RLH
	.globl _RCAP2H
	.globl _TMR2RLL
	.globl _RCAP2L
	.globl _TMR2CN
	.globl _T2CON
	.globl _ADC0LTH
	.globl _ADC0LTL
	.globl _ADC0GTH
	.globl _ADC0GTL
	.globl _SMB0DAT
	.globl _SMB0CF
	.globl _SMB0CN
	.globl _ADC0H
	.globl _ADC0L
	.globl _ADC0CF
	.globl _AMX0P
	.globl _AMX0N
	.globl _IDA0CN
	.globl _IP
	.globl _FLKEY
	.globl _FLSCL
	.globl _OSCICL
	.globl _OSCICN
	.globl _OSCXCN
	.globl __XPAGE
	.globl _EMI0CN
	.globl _CLKSEL
	.globl _IE
	.globl _P2MDOUT
	.globl _P1MDOUT
	.globl _P0MDOUT
	.globl _SPI0DAT
	.globl _SPI0CKR
	.globl _SPI0CFG
	.globl _P2
	.globl _CPT0MX
	.globl _CPT0MD
	.globl _CPT0CN
	.globl _SBUF0
	.globl _SBUF
	.globl _SCON0
	.globl _SCON
	.globl _IDA0H
	.globl _IDA0L
	.globl _TMR3H
	.globl _TMR3L
	.globl _TMR3RLH
	.globl _TMR3RLL
	.globl _TMR3CN
	.globl _P1
	.globl _PSCTL
	.globl _CKCON
	.globl _TH1
	.globl _TH0
	.globl _TL1
	.globl _TL0
	.globl _TMOD
	.globl _TCON
	.globl _PCON
	.globl _DPH
	.globl _DPL
	.globl _SP
	.globl _P0
;--------------------------------------------------------
; special function registers
;--------------------------------------------------------
	.area RSEG    (DATA)
G$P0$0$0 == 0x0080
_P0	=	0x0080
G$SP$0$0 == 0x0081
_SP	=	0x0081
G$DPL$0$0 == 0x0082
_DPL	=	0x0082
G$DPH$0$0 == 0x0083
_DPH	=	0x0083
G$PCON$0$0 == 0x0087
_PCON	=	0x0087
G$TCON$0$0 == 0x0088
_TCON	=	0x0088
G$TMOD$0$0 == 0x0089
_TMOD	=	0x0089
G$TL0$0$0 == 0x008a
_TL0	=	0x008a
G$TL1$0$0 == 0x008b
_TL1	=	0x008b
G$TH0$0$0 == 0x008c
_TH0	=	0x008c
G$TH1$0$0 == 0x008d
_TH1	=	0x008d
G$CKCON$0$0 == 0x008e
_CKCON	=	0x008e
G$PSCTL$0$0 == 0x008f
_PSCTL	=	0x008f
G$P1$0$0 == 0x0090
_P1	=	0x0090
G$TMR3CN$0$0 == 0x0091
_TMR3CN	=	0x0091
G$TMR3RLL$0$0 == 0x0092
_TMR3RLL	=	0x0092
G$TMR3RLH$0$0 == 0x0093
_TMR3RLH	=	0x0093
G$TMR3L$0$0 == 0x0094
_TMR3L	=	0x0094
G$TMR3H$0$0 == 0x0095
_TMR3H	=	0x0095
G$IDA0L$0$0 == 0x0096
_IDA0L	=	0x0096
G$IDA0H$0$0 == 0x0097
_IDA0H	=	0x0097
G$SCON$0$0 == 0x0098
_SCON	=	0x0098
G$SCON0$0$0 == 0x0098
_SCON0	=	0x0098
G$SBUF$0$0 == 0x0099
_SBUF	=	0x0099
G$SBUF0$0$0 == 0x0099
_SBUF0	=	0x0099
G$CPT0CN$0$0 == 0x009b
_CPT0CN	=	0x009b
G$CPT0MD$0$0 == 0x009d
_CPT0MD	=	0x009d
G$CPT0MX$0$0 == 0x009f
_CPT0MX	=	0x009f
G$P2$0$0 == 0x00a0
_P2	=	0x00a0
G$SPI0CFG$0$0 == 0x00a1
_SPI0CFG	=	0x00a1
G$SPI0CKR$0$0 == 0x00a2
_SPI0CKR	=	0x00a2
G$SPI0DAT$0$0 == 0x00a3
_SPI0DAT	=	0x00a3
G$P0MDOUT$0$0 == 0x00a4
_P0MDOUT	=	0x00a4
G$P1MDOUT$0$0 == 0x00a5
_P1MDOUT	=	0x00a5
G$P2MDOUT$0$0 == 0x00a6
_P2MDOUT	=	0x00a6
G$IE$0$0 == 0x00a8
_IE	=	0x00a8
G$CLKSEL$0$0 == 0x00a9
_CLKSEL	=	0x00a9
G$EMI0CN$0$0 == 0x00aa
_EMI0CN	=	0x00aa
G$_XPAGE$0$0 == 0x00aa
__XPAGE	=	0x00aa
G$OSCXCN$0$0 == 0x00b1
_OSCXCN	=	0x00b1
G$OSCICN$0$0 == 0x00b2
_OSCICN	=	0x00b2
G$OSCICL$0$0 == 0x00b3
_OSCICL	=	0x00b3
G$FLSCL$0$0 == 0x00b6
_FLSCL	=	0x00b6
G$FLKEY$0$0 == 0x00b7
_FLKEY	=	0x00b7
G$IP$0$0 == 0x00b8
_IP	=	0x00b8
G$IDA0CN$0$0 == 0x00b9
_IDA0CN	=	0x00b9
G$AMX0N$0$0 == 0x00ba
_AMX0N	=	0x00ba
G$AMX0P$0$0 == 0x00bb
_AMX0P	=	0x00bb
G$ADC0CF$0$0 == 0x00bc
_ADC0CF	=	0x00bc
G$ADC0L$0$0 == 0x00bd
_ADC0L	=	0x00bd
G$ADC0H$0$0 == 0x00be
_ADC0H	=	0x00be
G$SMB0CN$0$0 == 0x00c0
_SMB0CN	=	0x00c0
G$SMB0CF$0$0 == 0x00c1
_SMB0CF	=	0x00c1
G$SMB0DAT$0$0 == 0x00c2
_SMB0DAT	=	0x00c2
G$ADC0GTL$0$0 == 0x00c3
_ADC0GTL	=	0x00c3
G$ADC0GTH$0$0 == 0x00c4
_ADC0GTH	=	0x00c4
G$ADC0LTL$0$0 == 0x00c5
_ADC0LTL	=	0x00c5
G$ADC0LTH$0$0 == 0x00c6
_ADC0LTH	=	0x00c6
G$T2CON$0$0 == 0x00c8
_T2CON	=	0x00c8
G$TMR2CN$0$0 == 0x00c8
_TMR2CN	=	0x00c8
G$RCAP2L$0$0 == 0x00ca
_RCAP2L	=	0x00ca
G$TMR2RLL$0$0 == 0x00ca
_TMR2RLL	=	0x00ca
G$RCAP2H$0$0 == 0x00cb
_RCAP2H	=	0x00cb
G$TMR2RLH$0$0 == 0x00cb
_TMR2RLH	=	0x00cb
G$TL2$0$0 == 0x00cc
_TL2	=	0x00cc
G$TMR2L$0$0 == 0x00cc
_TMR2L	=	0x00cc
G$TH2$0$0 == 0x00cd
_TH2	=	0x00cd
G$TMR2H$0$0 == 0x00cd
_TMR2H	=	0x00cd
G$PSW$0$0 == 0x00d0
_PSW	=	0x00d0
G$REF0CN$0$0 == 0x00d1
_REF0CN	=	0x00d1
G$P0SKIP$0$0 == 0x00d4
_P0SKIP	=	0x00d4
G$P1SKIP$0$0 == 0x00d5
_P1SKIP	=	0x00d5
G$PCA0CN$0$0 == 0x00d8
_PCA0CN	=	0x00d8
G$PCA0MD$0$0 == 0x00d9
_PCA0MD	=	0x00d9
G$PCA0CPM0$0$0 == 0x00da
_PCA0CPM0	=	0x00da
G$PCA0CPM1$0$0 == 0x00db
_PCA0CPM1	=	0x00db
G$PCA0CPM2$0$0 == 0x00dc
_PCA0CPM2	=	0x00dc
G$ACC$0$0 == 0x00e0
_ACC	=	0x00e0
G$XBR0$0$0 == 0x00e1
_XBR0	=	0x00e1
G$XBR1$0$0 == 0x00e2
_XBR1	=	0x00e2
G$OSCLCN$0$0 == 0x00e3
_OSCLCN	=	0x00e3
G$IT01CF$0$0 == 0x00e4
_IT01CF	=	0x00e4
G$INT01CF$0$0 == 0x00e4
_INT01CF	=	0x00e4
G$EIE1$0$0 == 0x00e6
_EIE1	=	0x00e6
G$ADC0CN$0$0 == 0x00e8
_ADC0CN	=	0x00e8
G$PCA0CPL1$0$0 == 0x00e9
_PCA0CPL1	=	0x00e9
G$PCA0CPH1$0$0 == 0x00ea
_PCA0CPH1	=	0x00ea
G$PCA0CPL2$0$0 == 0x00eb
_PCA0CPL2	=	0x00eb
G$PCA0CPH2$0$0 == 0x00ec
_PCA0CPH2	=	0x00ec
G$RSTSRC$0$0 == 0x00ef
_RSTSRC	=	0x00ef
G$B$0$0 == 0x00f0
_B	=	0x00f0
G$P0MODE$0$0 == 0x00f1
_P0MODE	=	0x00f1
G$P0MDIN$0$0 == 0x00f1
_P0MDIN	=	0x00f1
G$P1MODE$0$0 == 0x00f2
_P1MODE	=	0x00f2
G$P1MDIN$0$0 == 0x00f2
_P1MDIN	=	0x00f2
G$EIP1$0$0 == 0x00f6
_EIP1	=	0x00f6
G$SPI0CN$0$0 == 0x00f8
_SPI0CN	=	0x00f8
G$PCA0L$0$0 == 0x00f9
_PCA0L	=	0x00f9
G$PCA0H$0$0 == 0x00fa
_PCA0H	=	0x00fa
G$PCA0CPL0$0$0 == 0x00fb
_PCA0CPL0	=	0x00fb
G$PCA0CPH0$0$0 == 0x00fc
_PCA0CPH0	=	0x00fc
G$VDM0CN$0$0 == 0x00ff
_VDM0CN	=	0x00ff
G$TMR0$0$0 == 0x8c8a
_TMR0	=	0x8c8a
G$TMR1$0$0 == 0x8d8b
_TMR1	=	0x8d8b
G$TMR2$0$0 == 0xcdcc
_TMR2	=	0xcdcc
G$RCAP2$0$0 == 0xcbca
_RCAP2	=	0xcbca
G$TMR2RL$0$0 == 0xcbca
_TMR2RL	=	0xcbca
G$TMR3$0$0 == 0x9594
_TMR3	=	0x9594
G$TMR3RL$0$0 == 0x9392
_TMR3RL	=	0x9392
G$IDA0$0$0 == 0x9796
_IDA0	=	0x9796
G$ADC0$0$0 == 0xbebd
_ADC0	=	0xbebd
G$ADC0GT$0$0 == 0xc4c3
_ADC0GT	=	0xc4c3
G$ADC0LT$0$0 == 0xc6c5
_ADC0LT	=	0xc6c5
G$PCA0$0$0 == 0xfaf9
_PCA0	=	0xfaf9
G$PCA0CP0$0$0 == 0xfcfb
_PCA0CP0	=	0xfcfb
G$PCA0CP1$0$0 == 0xeae9
_PCA0CP1	=	0xeae9
G$PCA0CP2$0$0 == 0xeceb
_PCA0CP2	=	0xeceb
;--------------------------------------------------------
; special function bits
;--------------------------------------------------------
	.area RSEG    (DATA)
G$P0_0$0$0 == 0x0080
_P0_0	=	0x0080
G$P0_1$0$0 == 0x0081
_P0_1	=	0x0081
G$P0_2$0$0 == 0x0082
_P0_2	=	0x0082
G$P0_3$0$0 == 0x0083
_P0_3	=	0x0083
G$P0_4$0$0 == 0x0084
_P0_4	=	0x0084
G$P0_5$0$0 == 0x0085
_P0_5	=	0x0085
G$P0_6$0$0 == 0x0086
_P0_6	=	0x0086
G$P0_7$0$0 == 0x0087
_P0_7	=	0x0087
G$IT0$0$0 == 0x0088
_IT0	=	0x0088
G$IE0$0$0 == 0x0089
_IE0	=	0x0089
G$IT1$0$0 == 0x008a
_IT1	=	0x008a
G$IE1$0$0 == 0x008b
_IE1	=	0x008b
G$TR0$0$0 == 0x008c
_TR0	=	0x008c
G$TF0$0$0 == 0x008d
_TF0	=	0x008d
G$TR1$0$0 == 0x008e
_TR1	=	0x008e
G$TF1$0$0 == 0x008f
_TF1	=	0x008f
G$P1_0$0$0 == 0x0090
_P1_0	=	0x0090
G$P1_1$0$0 == 0x0091
_P1_1	=	0x0091
G$P1_2$0$0 == 0x0092
_P1_2	=	0x0092
G$P1_3$0$0 == 0x0093
_P1_3	=	0x0093
G$P1_4$0$0 == 0x0094
_P1_4	=	0x0094
G$P1_5$0$0 == 0x0095
_P1_5	=	0x0095
G$P1_6$0$0 == 0x0096
_P1_6	=	0x0096
G$P1_7$0$0 == 0x0097
_P1_7	=	0x0097
G$RI$0$0 == 0x0098
_RI	=	0x0098
G$RI0$0$0 == 0x0098
_RI0	=	0x0098
G$TI$0$0 == 0x0099
_TI	=	0x0099
G$TI0$0$0 == 0x0099
_TI0	=	0x0099
G$RB8$0$0 == 0x009a
_RB8	=	0x009a
G$RB80$0$0 == 0x009a
_RB80	=	0x009a
G$TB8$0$0 == 0x009b
_TB8	=	0x009b
G$TB80$0$0 == 0x009b
_TB80	=	0x009b
G$REN$0$0 == 0x009c
_REN	=	0x009c
G$REN0$0$0 == 0x009c
_REN0	=	0x009c
G$SM2$0$0 == 0x009d
_SM2	=	0x009d
G$MCE0$0$0 == 0x009d
_MCE0	=	0x009d
G$SM0$0$0 == 0x009f
_SM0	=	0x009f
G$S0MODE$0$0 == 0x009f
_S0MODE	=	0x009f
G$P2_0$0$0 == 0x00a0
_P2_0	=	0x00a0
G$P2_1$0$0 == 0x00a1
_P2_1	=	0x00a1
G$P2_2$0$0 == 0x00a2
_P2_2	=	0x00a2
G$P2_3$0$0 == 0x00a3
_P2_3	=	0x00a3
G$P2_4$0$0 == 0x00a4
_P2_4	=	0x00a4
G$P2_5$0$0 == 0x00a5
_P2_5	=	0x00a5
G$P2_6$0$0 == 0x00a6
_P2_6	=	0x00a6
G$P2_7$0$0 == 0x00a7
_P2_7	=	0x00a7
G$EX0$0$0 == 0x00a8
_EX0	=	0x00a8
G$ET0$0$0 == 0x00a9
_ET0	=	0x00a9
G$EX1$0$0 == 0x00aa
_EX1	=	0x00aa
G$ET1$0$0 == 0x00ab
_ET1	=	0x00ab
G$ES$0$0 == 0x00ac
_ES	=	0x00ac
G$ES0$0$0 == 0x00ac
_ES0	=	0x00ac
G$ET2$0$0 == 0x00ad
_ET2	=	0x00ad
G$ESPI0$0$0 == 0x00ae
_ESPI0	=	0x00ae
G$EA$0$0 == 0x00af
_EA	=	0x00af
G$PX0$0$0 == 0x00b8
_PX0	=	0x00b8
G$PT0$0$0 == 0x00b9
_PT0	=	0x00b9
G$PX1$0$0 == 0x00ba
_PX1	=	0x00ba
G$PT1$0$0 == 0x00bb
_PT1	=	0x00bb
G$PS$0$0 == 0x00bc
_PS	=	0x00bc
G$PS0$0$0 == 0x00bc
_PS0	=	0x00bc
G$PT2$0$0 == 0x00bd
_PT2	=	0x00bd
G$PSPI0$0$0 == 0x00be
_PSPI0	=	0x00be
G$SI$0$0 == 0x00c0
_SI	=	0x00c0
G$ACK$0$0 == 0x00c1
_ACK	=	0x00c1
G$ARBLOST$0$0 == 0x00c2
_ARBLOST	=	0x00c2
G$ACKRQ$0$0 == 0x00c3
_ACKRQ	=	0x00c3
G$STO$0$0 == 0x00c4
_STO	=	0x00c4
G$STA$0$0 == 0x00c5
_STA	=	0x00c5
G$TXMODE$0$0 == 0x00c6
_TXMODE	=	0x00c6
G$MASTER$0$0 == 0x00c7
_MASTER	=	0x00c7
G$T2XCLK$0$0 == 0x00c8
_T2XCLK	=	0x00c8
G$TR2$0$0 == 0x00ca
_TR2	=	0x00ca
G$T2SPLIT$0$0 == 0x00cb
_T2SPLIT	=	0x00cb
G$TF2CEN$0$0 == 0x00cd
_TF2CEN	=	0x00cd
G$TF2LEN$0$0 == 0x00cd
_TF2LEN	=	0x00cd
G$TF2L$0$0 == 0x00ce
_TF2L	=	0x00ce
G$TF2$0$0 == 0x00cf
_TF2	=	0x00cf
G$TF2H$0$0 == 0x00cf
_TF2H	=	0x00cf
G$PARITY$0$0 == 0x00d0
_PARITY	=	0x00d0
G$F1$0$0 == 0x00d1
_F1	=	0x00d1
G$OV$0$0 == 0x00d2
_OV	=	0x00d2
G$RS0$0$0 == 0x00d3
_RS0	=	0x00d3
G$RS1$0$0 == 0x00d4
_RS1	=	0x00d4
G$F0$0$0 == 0x00d5
_F0	=	0x00d5
G$AC$0$0 == 0x00d6
_AC	=	0x00d6
G$CY$0$0 == 0x00d7
_CY	=	0x00d7
G$CCF0$0$0 == 0x00d8
_CCF0	=	0x00d8
G$CCF1$0$0 == 0x00d9
_CCF1	=	0x00d9
G$CCF2$0$0 == 0x00da
_CCF2	=	0x00da
G$CR$0$0 == 0x00de
_CR	=	0x00de
G$CF$0$0 == 0x00df
_CF	=	0x00df
G$AD0CM0$0$0 == 0x00e8
_AD0CM0	=	0x00e8
G$AD0CM1$0$0 == 0x00e9
_AD0CM1	=	0x00e9
G$AD0CM2$0$0 == 0x00ea
_AD0CM2	=	0x00ea
G$AD0WINT$0$0 == 0x00eb
_AD0WINT	=	0x00eb
G$AD0BUSY$0$0 == 0x00ec
_AD0BUSY	=	0x00ec
G$AD0INT$0$0 == 0x00ed
_AD0INT	=	0x00ed
G$AD0TM$0$0 == 0x00ee
_AD0TM	=	0x00ee
G$AD0EN$0$0 == 0x00ef
_AD0EN	=	0x00ef
G$SPIEN$0$0 == 0x00f8
_SPIEN	=	0x00f8
G$TXBMT$0$0 == 0x00f9
_TXBMT	=	0x00f9
G$NSSMD0$0$0 == 0x00fa
_NSSMD0	=	0x00fa
G$NSSMD1$0$0 == 0x00fb
_NSSMD1	=	0x00fb
G$RXOVRN$0$0 == 0x00fc
_RXOVRN	=	0x00fc
G$MODF$0$0 == 0x00fd
_MODF	=	0x00fd
G$WCOL$0$0 == 0x00fe
_WCOL	=	0x00fe
G$SPIF$0$0 == 0x00ff
_SPIF	=	0x00ff
G$LCD_RS$0$0 == 0x0080
_LCD_RS	=	0x0080
G$LCD_RW$0$0 == 0x0081
_LCD_RW	=	0x0081
G$LCD_E$0$0 == 0x0097
_LCD_E	=	0x0097
G$EEPROM_SEL$0$0 == 0x0096
_EEPROM_SEL	=	0x0096
;--------------------------------------------------------
; overlayable register banks
;--------------------------------------------------------
	.area REG_BANK_0	(REL,OVR,DATA)
	.ds 8
;--------------------------------------------------------
; internal ram data
;--------------------------------------------------------
	.area DSEG    (DATA)
;--------------------------------------------------------
; overlayable items in internal ram 
;--------------------------------------------------------
	.area OSEG    (OVR,DATA)
;--------------------------------------------------------
; Stack segment in internal ram 
;--------------------------------------------------------
	.area	SSEG	(DATA)
__start__stack:
	.ds	1

;--------------------------------------------------------
; indirectly addressable internal ram data
;--------------------------------------------------------
	.area ISEG    (DATA)
;--------------------------------------------------------
; absolute internal ram data
;--------------------------------------------------------
	.area IABS    (ABS,DATA)
	.area IABS    (ABS,DATA)
;--------------------------------------------------------
; bit data
;--------------------------------------------------------
	.area BSEG    (BIT)
;--------------------------------------------------------
; paged external ram data
;--------------------------------------------------------
	.area PSEG    (PAG,XDATA)
;--------------------------------------------------------
; external ram data
;--------------------------------------------------------
	.area XSEG    (XDATA)
Lmain$my_odo$1$1==.
_main_my_odo_1_1:
	.ds 4
Lmain$lcd_inited$1$1==.
_main_lcd_inited_1_1:
	.ds 1
Lmain$spinner$1$1==.
_main_spinner_1_1:
	.ds 1
;--------------------------------------------------------
; absolute external ram data
;--------------------------------------------------------
	.area XABS    (ABS,XDATA)
;--------------------------------------------------------
; external initialized ram data
;--------------------------------------------------------
	.area XISEG   (XDATA)
	.area HOME    (CODE)
	.area GSINIT0 (CODE)
	.area GSINIT1 (CODE)
	.area GSINIT2 (CODE)
	.area GSINIT3 (CODE)
	.area GSINIT4 (CODE)
	.area GSINIT5 (CODE)
	.area GSINIT  (CODE)
	.area GSFINAL (CODE)
	.area CSEG    (CODE)
;--------------------------------------------------------
; interrupt vector 
;--------------------------------------------------------
	.area HOME    (CODE)
__interrupt_vect:
	ljmp	__sdcc_gsinit_startup
;--------------------------------------------------------
; global & static initialisations
;--------------------------------------------------------
	.area HOME    (CODE)
	.area GSINIT  (CODE)
	.area GSFINAL (CODE)
	.area GSINIT  (CODE)
	.globl __sdcc_gsinit_startup
	.globl __sdcc_program_startup
	.globl __start__stack
	.globl __mcs51_genXINIT
	.globl __mcs51_genXRAMCLEAR
	.globl __mcs51_genRAMCLEAR
	.area GSFINAL (CODE)
	ljmp	__sdcc_program_startup
;--------------------------------------------------------
; Home
;--------------------------------------------------------
	.area HOME    (CODE)
	.area HOME    (CODE)
__sdcc_program_startup:
	lcall	_main
;	return from main will lock up
	sjmp .
;--------------------------------------------------------
; code
;--------------------------------------------------------
	.area CSEG    (CODE)
;------------------------------------------------------------
;Allocation info for local variables in function 'ADC_Init'
;------------------------------------------------------------
;------------------------------------------------------------
	G$ADC_Init$0$0 ==.
	C$main.c$15$0$0 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:15: void ADC_Init()
;	-----------------------------------------
;	 function ADC_Init
;	-----------------------------------------
_ADC_Init:
	ar2 = 0x02
	ar3 = 0x03
	ar4 = 0x04
	ar5 = 0x05
	ar6 = 0x06
	ar7 = 0x07
	ar0 = 0x00
	ar1 = 0x01
	C$main.c$17$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:17: AMX0P     = 0x10;
	mov	_AMX0P,#0x10
	C$main.c$18$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:18: AMX0N     = 0x11;
	mov	_AMX0N,#0x11
	C$main.c$20$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:20: ADC0CN    = 0xC0;
	mov	_ADC0CN,#0xC0
	C$main.c$21$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:21: REF0CN    = 0x0E;
	mov	_REF0CN,#0x0E
	C$main.c$22$1$1 ==.
	XG$ADC_Init$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'UART_Init'
;------------------------------------------------------------
;------------------------------------------------------------
	G$UART_Init$0$0 ==.
	C$main.c$24$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:24: void UART_Init()
;	-----------------------------------------
;	 function UART_Init
;	-----------------------------------------
_UART_Init:
	C$main.c$26$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:26: SCON0     = 0x10;
	mov	_SCON0,#0x10
	C$main.c$28$1$1 ==.
	XG$UART_Init$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'SPI_Init'
;------------------------------------------------------------
;------------------------------------------------------------
	G$SPI_Init$0$0 ==.
	C$main.c$30$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:30: void SPI_Init()
;	-----------------------------------------
;	 function SPI_Init
;	-----------------------------------------
_SPI_Init:
	C$main.c$32$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:32: SPI0CFG   = 0x40;
	mov	_SPI0CFG,#0x40
	C$main.c$33$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:33: SPI0CN    = 0x01;
	mov	_SPI0CN,#0x01
	C$main.c$34$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:34: SPI0CKR   = 0x05;
	mov	_SPI0CKR,#0x05
	C$main.c$35$1$1 ==.
	XG$SPI_Init$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'Timer_Init'
;------------------------------------------------------------
;------------------------------------------------------------
	G$Timer_Init$0$0 ==.
	C$main.c$37$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:37: void Timer_Init()
;	-----------------------------------------
;	 function Timer_Init
;	-----------------------------------------
_Timer_Init:
	C$main.c$40$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:40: TCON      = 0x40;
	mov	_TCON,#0x40
	C$main.c$41$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:41: TMOD      = 0x20;
	mov	_TMOD,#0x20
	C$main.c$42$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:42: CKCON     = 0x01;
	mov	_CKCON,#0x01
	C$main.c$43$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:43: TH1       = 0xB0;
	mov	_TH1,#0xB0
	C$main.c$45$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:45: TMR3CN    = 0x05;
	mov	_TMR3CN,#0x05
	C$main.c$46$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:46: TMR3RLH   = 0xF0;
	mov	_TMR3RLH,#0xF0
	C$main.c$47$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:47: TMR3H     = 0xF0;
	mov	_TMR3H,#0xF0
	C$main.c$49$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:49: hours = 0;
	mov	dptr,#_hours
	C$main.c$50$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:50: minutes = 0;
	C$main.c$51$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:51: seconds = 0;
	clr	a
	movx	@dptr,a
	mov	dptr,#_minutes
	movx	@dptr,a
	mov	dptr,#_seconds
	movx	@dptr,a
	C$main.c$52$1$1 ==.
	XG$Timer_Init$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'Interrupts_Init'
;------------------------------------------------------------
;------------------------------------------------------------
	G$Interrupts_Init$0$0 ==.
	C$main.c$54$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:54: void Interrupts_Init()
;	-----------------------------------------
;	 function Interrupts_Init
;	-----------------------------------------
_Interrupts_Init:
	C$main.c$56$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:56: IE        = 0xD0;
	mov	_IE,#0xD0
	C$main.c$57$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:57: EIE1      = 0x88;
	mov	_EIE1,#0x88
	C$main.c$58$1$1 ==.
	XG$Interrupts_Init$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'Port_IO_Init'
;------------------------------------------------------------
;------------------------------------------------------------
	G$Port_IO_Init$0$0 ==.
	C$main.c$62$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:62: void Port_IO_Init()
;	-----------------------------------------
;	 function Port_IO_Init
;	-----------------------------------------
_Port_IO_Init:
	C$main.c$84$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:84: P0MDIN    = 0xF3; //1111 0011
	mov	_P0MDIN,#0xF3
	C$main.c$85$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:85: P0MDOUT   = 0xDF; //1101 1111
	mov	_P0MDOUT,#0xDF
	C$main.c$86$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:86: P1MDOUT   = 0xFF; //1111 1111
	mov	_P1MDOUT,#0xFF
	C$main.c$87$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:87: P2MDOUT   = 0x00; //0000 0000
	mov	_P2MDOUT,#0x00
	C$main.c$88$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:88: P0SKIP    = 0x8F;
	mov	_P0SKIP,#0x8F
	C$main.c$89$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:89: P1SKIP    = 0x0F;
	mov	_P1SKIP,#0x0F
	C$main.c$90$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:90: XBR0      = 0x03;
	mov	_XBR0,#0x03
	C$main.c$91$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:91: XBR1      = 0x40;
	mov	_XBR1,#0x40
	C$main.c$94$1$1 ==.
	XG$Port_IO_Init$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'Oscillator_Init'
;------------------------------------------------------------
;i                         Allocated with name '_Oscillator_Init_i_1_1'
;------------------------------------------------------------
	G$Oscillator_Init$0$0 ==.
	C$main.c$97$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:97: void Oscillator_Init()
;	-----------------------------------------
;	 function Oscillator_Init
;	-----------------------------------------
_Oscillator_Init:
	C$main.c$100$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:100: OSCXCN		= 0x61;
	mov	_OSCXCN,#0x61
	C$main.c$102$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:102: for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
	mov	r2,#0xB8
	mov	r3,#0x0B
00106$:
	dec	r2
	cjne	r2,#0xff,00113$
	dec	r3
00113$:
	mov	a,r2
	orl	a,r3
	jnz	00106$
	C$main.c$104$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:104: while ((OSCXCN & 0x80) == 0);
00101$:
	mov	a,_OSCXCN
	jnb	acc.7,00101$
	C$main.c$107$1$1 ==.
	XG$Oscillator_Init$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'Init_Device'
;------------------------------------------------------------
;------------------------------------------------------------
	G$Init_Device$0$0 ==.
	C$main.c$111$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:111: void Init_Device(void)
;	-----------------------------------------
;	 function Init_Device
;	-----------------------------------------
_Init_Device:
	C$main.c$113$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:113: Port_IO_Init();
	lcall	_Port_IO_Init
	C$main.c$114$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:114: Timer_Init();	
	lcall	_Timer_Init
	C$main.c$115$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:115: Interrupts_Init();
	lcall	_Interrupts_Init
	C$main.c$116$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:116: Oscillator_Init();
	lcall	_Oscillator_Init
	C$main.c$117$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:117: ADC_Init();
	lcall	_ADC_Init
	C$main.c$119$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:119: SPI_Init();
	lcall	_SPI_Init
	C$main.c$120$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:120: init_eeprom();
	lcall	_init_eeprom
	C$main.c$121$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:121: lcd_initialize();	
	lcall	_lcd_initialize
	C$main.c$122$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:122: UART_Init();
	lcall	_UART_Init
	C$main.c$123$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:123: have_fix = 0;
	mov	dptr,#_have_fix
	C$main.c$124$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:124: uartBufferIndex = 0;
	clr	a
	movx	@dptr,a
	mov	dptr,#_uartBufferIndex
	movx	@dptr,a
	C$main.c$126$1$1 ==.
	XG$Init_Device$0$0 ==.
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'main'
;------------------------------------------------------------
;curr_temp                 Allocated with name '_main_curr_temp_1_1'
;my_odo                    Allocated with name '_main_my_odo_1_1'
;lcd_inited                Allocated with name '_main_lcd_inited_1_1'
;spinner                   Allocated with name '_main_spinner_1_1'
;------------------------------------------------------------
	G$main$0$0 ==.
	C$main.c$128$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:128: void main(){
;	-----------------------------------------
;	 function main
;	-----------------------------------------
_main:
	C$main.c$132$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:132: unsigned char xdata lcd_inited = 0;
	mov	dptr,#_main_lcd_inited_1_1
	clr	a
	movx	@dptr,a
	C$main.c$134$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:134: PCA0MD &= ~0x40; // disable watchdog
	anl	_PCA0MD,#0xBF
	C$main.c$135$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:135: Init_Device();
	lcall	_Init_Device
	C$main.c$136$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:136: my_odo = odometer;
	mov	dptr,#_odometer
	movx	a,@dptr
	mov	r2,a
	inc	dptr
	movx	a,@dptr
	mov	r3,a
	inc	dptr
	movx	a,@dptr
	mov	r4,a
	inc	dptr
	movx	a,@dptr
	mov	r5,a
	mov	dptr,#_main_my_odo_1_1
	mov	a,r2
	movx	@dptr,a
	inc	dptr
	mov	a,r3
	movx	@dptr,a
	inc	dptr
	mov	a,r4
	movx	@dptr,a
	inc	dptr
	mov	a,r5
	movx	@dptr,a
	C$main.c$137$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:137: lcd_clear();
	lcall	_lcd_clear
	C$main.c$138$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:138: lcd_write_string_at_pos("ACQUIRING GPS SIGNAL", 1, 0, 20);	 
	mov	_lcd_write_string_at_pos_PARM_2,#0x01
	mov	_lcd_write_string_at_pos_PARM_3,#0x00
	mov	_lcd_write_string_at_pos_PARM_4,#0x14
	mov	dptr,#__str_0
	mov	b,#0x80
	lcall	_lcd_write_string_at_pos
	C$main.c$139$1$1 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:139: while(1){
00132$:
	C$main.c$146$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:146: sleep();
	lcall	_sleep
	C$main.c$147$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:147: lcd_write_string_at_pos(get_time_str(), 4, 12, 8);
	lcall	_get_time_str
	mov	r2,dpl
	mov	r3,dph
	mov	r4,b
	mov	_lcd_write_string_at_pos_PARM_2,#0x04
	mov	_lcd_write_string_at_pos_PARM_3,#0x0C
	mov	_lcd_write_string_at_pos_PARM_4,#0x08
	mov	dpl,r2
	mov	dph,r3
	mov	b,r4
	lcall	_lcd_write_string_at_pos
	C$main.c$150$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:150: switch(sentence_ready){
	mov	dptr,#_sentence_ready
	movx	a,@dptr
	mov	r2,a
	cjne	r2,#0x01,00155$
	sjmp	00101$
00155$:
	cjne	r2,#0x02,00156$
	sjmp	00102$
00156$:
	C$main.c$152$3$3 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:152: case GPRMC_READY:
	cjne	r2,#0x03,00104$
	sjmp	00103$
00101$:
	C$main.c$153$3$3 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:153: process_gprmc();		
	lcall	_process_gprmc
	C$main.c$154$3$3 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:154: break;
	C$main.c$156$3$3 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:156: case GPGGA_READY:
	sjmp	00104$
00102$:
	C$main.c$157$3$3 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:157: process_gpgga();
	lcall	_process_gpgga
	C$main.c$158$3$3 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:158: break;
	C$main.c$159$3$3 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:159: case GPS_DUMP:
	sjmp	00104$
00103$:
	C$main.c$160$3$3 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:160: dump_gps();
	lcall	_dump_gps
	C$main.c$161$3$3 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:161: sentence_ready = 0;
	mov	dptr,#_sentence_ready
	clr	a
	movx	@dptr,a
	C$main.c$163$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:163: }
00104$:
	C$main.c$166$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:166: if(!have_fix){
	mov	dptr,#_have_fix
	movx	a,@dptr
	mov	r2,a
	C$main.c$167$3$4 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:167: lcd_write_string_at_pos("ACQUIRING GPS SIGNAL", 1, 0, 20);		
	jnz	00106$
	mov	_lcd_write_string_at_pos_PARM_2,#0x01
	mov	_lcd_write_string_at_pos_PARM_3,a
	mov	_lcd_write_string_at_pos_PARM_4,#0x14
	mov	dptr,#__str_0
	mov	b,#0x80
	lcall	_lcd_write_string_at_pos
00106$:
	C$main.c$171$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:171: if(sentence_ready){
	mov	dptr,#_sentence_ready
	movx	a,@dptr
	mov	r2,a
	jz	00113$
	C$main.c$172$3$5 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:172: switch(seconds % 4){
	mov	dptr,#_seconds
	movx	a,@dptr
	mov	r2,a
	anl	ar2,#0x03
	cjne	r2,#0x00,00160$
	sjmp	00107$
00160$:
	cjne	r2,#0x01,00161$
	sjmp	00108$
00161$:
	C$main.c$173$4$6 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:173: case 0:
	cjne	r2,#0x02,00110$
	sjmp	00109$
00107$:
	C$main.c$174$4$6 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:174: spinner[0] = '|';
	mov	dptr,#_main_spinner_1_1
	mov	a,#0x7C
	movx	@dptr,a
	C$main.c$175$4$6 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:175: break;
	C$main.c$176$4$6 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:176: case 1:
	sjmp	00111$
00108$:
	C$main.c$177$4$6 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:177: spinner[0] = '/';
	mov	dptr,#_main_spinner_1_1
	mov	a,#0x2F
	movx	@dptr,a
	C$main.c$178$4$6 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:178: break;
	C$main.c$179$4$6 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:179: case 2:
	sjmp	00111$
00109$:
	C$main.c$180$4$6 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:180: spinner[0] = '-';
	mov	dptr,#_main_spinner_1_1
	mov	a,#0x2D
	movx	@dptr,a
	C$main.c$181$4$6 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:181: break;
	C$main.c$182$4$6 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:182: default:
	sjmp	00111$
00110$:
	C$main.c$183$4$6 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:183: spinner[0] = 0;
	mov	dptr,#_main_spinner_1_1
	clr	a
	movx	@dptr,a
	C$main.c$185$3$5 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:185: }
00111$:
	C$main.c$187$3$5 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:187: lcd_write_string_at_pos(spinner, 4, 0, 1);
	mov	_lcd_write_string_at_pos_PARM_2,#0x04
	mov	_lcd_write_string_at_pos_PARM_3,#0x00
	mov	_lcd_write_string_at_pos_PARM_4,#0x01
	mov	dptr,#_main_spinner_1_1
	mov	b,#0x00
	lcall	_lcd_write_string_at_pos
	C$main.c$188$3$5 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:188: lcd_write_string_at_pos(uartBuffer, 4, 1, 6);
	mov	_lcd_write_string_at_pos_PARM_2,#0x04
	mov	_lcd_write_string_at_pos_PARM_3,#0x01
	mov	_lcd_write_string_at_pos_PARM_4,#0x06
	mov	dptr,#_uartBuffer
	mov	b,#0x00
	lcall	_lcd_write_string_at_pos
00113$:
	C$main.c$194$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:194: if(!lcd_inited && seconds == 6){
	mov	dptr,#_main_lcd_inited_1_1
	movx	a,@dptr
	mov	r2,a
	jnz	00115$
	mov	dptr,#_seconds
	movx	a,@dptr
	mov	r2,a
	cjne	r2,#0x06,00115$
	C$main.c$195$3$7 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:195: lcd_initialize();
	lcall	_lcd_initialize
	C$main.c$196$3$7 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:196: lcd_inited = 1;
	mov	dptr,#_main_lcd_inited_1_1
	mov	a,#0x01
	movx	@dptr,a
00115$:
	C$main.c$202$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:202: adc_sampled = 0;
	mov	dptr,#_adc_sampled
	clr	a
	movx	@dptr,a
	C$main.c$203$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:203: AD0BUSY = 1;
	setb	_AD0BUSY
	C$main.c$204$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:204: adc_result = 0;
	mov	dptr,#_adc_result
	clr	a
	movx	@dptr,a
	inc	dptr
	movx	@dptr,a
	C$main.c$205$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:205: while(!adc_sampled);
00117$:
	mov	dptr,#_adc_sampled
	movx	a,@dptr
	mov	r2,a
	jz	00117$
	C$main.c$208$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:208: curr_temp = (((adc_result - 253) * 9) / 5) + 32;
	mov	dptr,#_adc_result
	movx	a,@dptr
	mov	r2,a
	inc	dptr
	movx	a,@dptr
	mov	r3,a
	mov	a,r2
	add	a,#0x03
	mov	__mulint_PARM_2,a
	mov	a,r3
	addc	a,#0xff
	mov	(__mulint_PARM_2 + 1),a
	mov	dptr,#0x0009
	lcall	__mulint
	mov	r2,dpl
	mov	r3,dph
	mov	__divsint_PARM_2,#0x05
	clr	a
	mov	(__divsint_PARM_2 + 1),a
	mov	dpl,r2
	mov	dph,r3
	lcall	__divsint
	mov	a,dpl
	mov	b,dph
	add	a,#0x20
	mov	r2,a
	clr	a
	addc	a,b
	mov	r3,a
	C$main.c$209$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:209: memset(pos_line, 0x20, sizeof pos_line);
	mov	_memset_PARM_2,#0x20
	mov	_memset_PARM_3,#0x1E
	clr	a
	mov	(_memset_PARM_3 + 1),a
	mov	dptr,#_pos_line
	mov	b,#0x00
	push	ar2
	push	ar3
	lcall	_memset
	pop	ar3
	pop	ar2
	C$main.c$210$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:210: if(curr_temp > -50){
	clr	c
	mov	a,#0xCE
	subb	a,r2
	mov	a,#(0xFF ^ 0x80)
	mov	b,r3
	xrl	b,#0x80
	subb	a,b
	jnc	00121$
	C$main.c$211$3$8 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:211: sprintf(pos_line, "%d\1F", curr_temp);
	push	ar2
	push	ar3
	mov	a,#__str_1
	push	acc
	mov	a,#(__str_1 >> 8)
	push	acc
	mov	a,#0x80
	push	acc
	mov	a,#_pos_line
	push	acc
	mov	a,#(_pos_line >> 8)
	push	acc
	clr	a
	push	acc
	lcall	_sprintf
	mov	a,sp
	add	a,#0xf8
	mov	sp,a
	C$main.c$212$3$8 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:212: lcd_write_string_at_pos(pos_line, 3, 0, 4);
	mov	_lcd_write_string_at_pos_PARM_2,#0x03
	mov	_lcd_write_string_at_pos_PARM_3,#0x00
	mov	_lcd_write_string_at_pos_PARM_4,#0x04
	mov	dptr,#_pos_line
	mov	b,#0x00
	lcall	_lcd_write_string_at_pos
00121$:
	C$main.c$216$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:216: if(sentence_ready){
	mov	dptr,#_sentence_ready
	movx	a,@dptr
	mov	r2,a
	jz	00127$
	C$main.c$218$3$9 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:218: if(seconds % 5 == 0)
	mov	dptr,#_seconds
	movx	a,@dptr
	mov	r2,a
	mov	b,#0x05
	div	ab
	mov	a,b
	C$main.c$219$3$9 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:219: save_gps_log(0);
	jnz	00123$
	mov	dpl,a
	lcall	_save_gps_log
00123$:
	C$main.c$221$3$9 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:221: if(seconds == 57)
	mov	dptr,#_seconds
	movx	a,@dptr
	mov	r2,a
	cjne	r2,#0x39,00127$
	C$main.c$222$3$9 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:222: save_gps_log(1);
	mov	dpl,#0x01
	lcall	_save_gps_log
00127$:
	C$main.c$226$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:226: sentence_ready = 0;
	mov	dptr,#_sentence_ready
	clr	a
	movx	@dptr,a
	C$main.c$229$2$2 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:229: if(seconds == 30 && odometer - my_odo > 0.1f){
	mov	dptr,#_seconds
	movx	a,@dptr
	mov	r2,a
	cjne	r2,#0x1E,00172$
	sjmp	00173$
00172$:
	ljmp	00132$
00173$:
	mov	dptr,#_odometer
	movx	a,@dptr
	mov	r2,a
	inc	dptr
	movx	a,@dptr
	mov	r3,a
	inc	dptr
	movx	a,@dptr
	mov	r4,a
	inc	dptr
	movx	a,@dptr
	mov	r5,a
	mov	dptr,#_main_my_odo_1_1
	movx	a,@dptr
	push	acc
	inc	dptr
	movx	a,@dptr
	push	acc
	inc	dptr
	movx	a,@dptr
	push	acc
	inc	dptr
	movx	a,@dptr
	push	acc
	mov	dpl,r2
	mov	dph,r3
	mov	b,r4
	mov	a,r5
	lcall	___fssub
	mov	r2,dpl
	mov	r3,dph
	mov	r4,b
	mov	r5,a
	mov	a,sp
	add	a,#0xfc
	mov	sp,a
	mov	a,#0xCD
	push	acc
	mov	a,#0xCC
	push	acc
	push	acc
	mov	a,#0x3D
	push	acc
	mov	dpl,r2
	mov	dph,r3
	mov	b,r4
	mov	a,r5
	lcall	___fsgt
	mov	r2,dpl
	mov	a,sp
	add	a,#0xfc
	mov	sp,a
	mov	a,r2
	jnz	00174$
	ljmp	00132$
00174$:
	C$main.c$230$3$10 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:230: save_odometer();
	lcall	_save_odometer
	C$main.c$231$3$10 ==.
;	C:\Documents and Settings\troy\Desktop\vwgps_sdcc\vwgps\src\main.c:231: my_odo = odometer;
	mov	dptr,#_odometer
	movx	a,@dptr
	mov	r2,a
	inc	dptr
	movx	a,@dptr
	mov	r3,a
	inc	dptr
	movx	a,@dptr
	mov	r4,a
	inc	dptr
	movx	a,@dptr
	mov	r5,a
	mov	dptr,#_main_my_odo_1_1
	mov	a,r2
	movx	@dptr,a
	inc	dptr
	mov	a,r3
	movx	@dptr,a
	inc	dptr
	mov	a,r4
	movx	@dptr,a
	inc	dptr
	mov	a,r5
	movx	@dptr,a
	C$main.c$238$1$1 ==.
	XG$main$0$0 ==.
	ljmp	00132$
	.area CSEG    (CODE)
	.area CONST   (CODE)
Fmain$_str_0$0$0 == .
__str_0:
	.ascii "ACQUIRING GPS SIGNAL"
	.db 0x00
Fmain$_str_1$0$0 == .
__str_1:
	.ascii "%d"
	.db 0x01
	.ascii "F"
	.db 0x00
	.area XINIT   (CODE)
	.area CABS    (ABS,CODE)
